import { DataTypes, Deferrable, Model } from "sequelize";
import sequelize from './db';
import User from './user'
class Article extends Model {
  declare id: number;
};
Article.init({
  title: {
    type: DataTypes.STRING,
    allowNull: false
  },
  // 可以创建外键：
  userId: {
    type: DataTypes.STRING(32),

    references: {
      // 这是对另一个模型的参考
      model: User,

      // 这是引用模型的列名
      key: 'userId',

      // 使用 PostgreSQL,可以通过 Deferrable 类型声明何时检查外键约束.
      deferrable: Deferrable.INITIALLY_DEFERRED()
      // 参数:
      // - `Deferrable.INITIALLY_IMMEDIATE` - 立即检查外键约束
      // - `Deferrable.INITIALLY_DEFERRED` - 将所有外键约束检查推迟到事务结束
      // - `Deferrable.NOT` - 完全不推迟检查(默认) - 这将不允许你动态更改事务中的规则
    }
  },
  content: {
    type: DataTypes.STRING,
    allowNull: false
  },
  publishDate: {
    type: DataTypes.STRING,
    allowNull: false
  }
}, {
  sequelize,
  tableName: 'article',
  modelName: 'Article',
  createdAt: false,
  updatedAt: false,
  paranoid: true
})
export default Article